package me.flyray.bsin.blockchain.eth;

import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

import lombok.extern.slf4j.Slf4j;
import me.flyray.bsin.blockchain.BsinBlockChainEngine;
import me.flyray.bsin.blockchain.utils.Java2ContractTypeConcert;

/**
 * @author bolei
 * @date 2023/8/2 19:59
 * @desc
 */

@Slf4j
@Component
public class EthBiz implements BsinBlockChainEngine {

    @Override
    public Map<String, String> createWallet(String password, String chainEnv) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> createAccount(String chainEnv, String privateKey, String gasPrice, String gasLimit, String value) {
        return null;
    }

    @Override
    public Map<String, Object> contractDeploy(String chainEnv, String privateKey, String gasPrice, String gasLimit, String value, String byteCode, List<Java2ContractTypeConcert> functionReturnType, List<Java2ContractTypeConcert> functionInputParams) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> transfer(String chainEnv, String fromPrivateKey, String gasPrice, String gasLimit, String value, String toAddress) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> contractWrite(String chainEnv, String privateKey, String gasPrice, String gasLimit, String value, String contractAddress, String method, List<Java2ContractTypeConcert> functionReturnType, List<Java2ContractTypeConcert> functionInputParams) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> contractWrite(String chainEnv, String privateKey, String gasPrice, String gasLimit, String value, String contractAddress, String method, String methodId, List<Java2ContractTypeConcert> functionReturnType, List<Java2ContractTypeConcert> functionInputParams) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> contractRead(String chainEnv, String contractAddress, String method, List<Java2ContractTypeConcert> functionReturnType, List<Java2ContractTypeConcert> functionInputParams) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> getTransaction(String txHash) {
        return null;
    }

    @Override
    public Map<String, Object> getSponsor(Map<String, Object> requestMap) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> setSponsor(Map<String, Object> requestMap) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> addWhiteList(Map<String, Object> requestMap) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> isWhitelisted(Map<String, Object> requestMap) throws Exception {
        return null;
    }

    @Override
    public Map<String, Object> removeWhiteList(Map<String, Object> requestMap) throws Exception {
        return null;
    }

    @Override
    public String getAddress(String chainEnv, String privateKey) {
        return null;
    }

    @Override
    public String getPrivateKey() {
        return null;
    }

    @Override
    public String getBalance(String chainEnv, String address) throws Exception {
        return null;
    }

    @Override
    public String getAssetBalance(String chainEnv, String contractAddress, String accountAddress, String assetProtocol, String tokenId) throws Exception{
        return null;
    }
    @Override
    public String getIpfsGateway() {
        return null;
    }

    @Override
    public String getZeroAddress(String chainEnv) {
        return null;
    }

    @Override
    public String getWeb3ClientVersion(String chainEnv) {
        return null;
    }

    @Override
    public long getBlockHeight(String chainEnv) {
        return 0;
    }

    @Override
    public String getTreasuryContractAddress(String chainEnv, String daoAddressStr, String wrapperOrExtensionName, boolean byFactory, boolean isInsert) {
        return null;
    }

    @Override
    public String getVaultsContractAddress(String chainEnv, String daoAddressStr, String wrapperOrExtensionName, boolean byFactory, boolean isInsert) {
        return null;
    }

    @Override
    public String getDaoWrapperOrExtensionAddressByName(String chainEnv, String daoAddressStr, String wrapperOrExtensionName, boolean isInsert) {
        return null;
    }

    @Override
    public String getDaoNameByAddress(String chainEnv, String daoAddressStr, boolean isInsert) {
        return null;
    }

    @Override
    public String getDaoAddressByIndex(String chainEnv, String daoIndex, boolean isInsert) {
        return null;
    }

    @Override
    public String getDaoAddressByName(String chainEnv, String daoName, boolean isInsert) {
        return null;
    }
}
